package org.osll.tictactoe.game;

import org.osll.tictactoe.CurrentMove;
import org.osll.tictactoe.Field;
import org.osll.tictactoe.Move;
import org.osll.tictactoe.Team;
import org.osll.tictactoe.engine.GameOverException;

public interface Game {
	
	/**
	 * походить
	 * @param move
	 */
	public void makeMove(Move move) throws GameOverException;
	
	/**
	 * Получить поле
	 * @return
	 */
	public Field getField();
	
	/**
	 * 
	 * @return
	 */
	public Move getLastMove(Team team) throws IllegalStateException;
	
	public boolean isAvail(Team team);
	
	public void addPlayer(String name, Team team);
	
	public void loginPlayer(String name, Team team);
	
	public Transport getTransport();
	
	public CurrentMove getCurrentMove();
	
	public void start();
	
	public boolean isStarted();

	public boolean isOver();

	public String getApponentName(Team team);
	
}
